package domain

type Amount struct {
	Currency string //支付货币类型 国际化必须
	Total    int64  //记录分数
}

type Payment struct {
	Amt         Amount
	BizTradeNO  string        //代表业务 业务方生成 可以用于去重
	Description string        // 订单本身的描述
	Status      PaymentStatus //状态
	TxnID       string        // 第三方那边返回的 ID
}

type PaymentStatus uint8

func (s PaymentStatus) AsUint8() uint8 {
	return uint8(s)
}

const (
	PaymentStatusUnknown = iota
	PaymentStatusInit
	PaymentStatusSuccess
	PaymentStatusFailed
	PaymentStatusRefund
)

type LocalEvent struct {
	BizTradeNO  string
	BizStatus   PaymentStatus
	EventStatus LocalEventStatus
}

type LocalEventStatus uint8

func (s LocalEventStatus) AsUint8() uint8 {
	return uint8(s)
}

const (
	LocalEventStatusUnknown = iota
	LocalEventStatusInit
	LocalEventStatusSuccess
	LocalEventStatusFailed
)
